package cn.trigram.json.annotation;

import static com.fasterxml.jackson.annotation.JsonFormat.DEFAULT_LOCALE;
import static com.fasterxml.jackson.annotation.JsonFormat.DEFAULT_TIMEZONE;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 * 日期时间的序列化和反序列化注解，包括Date和jdk8以后的Temporal类型
 *
 * @version 1.0.0
 * @date 2022/08/22 14:00:27
 * @since 1.0.0
 */
@Documented
@Target({FIELD})
@Retention(RUNTIME)
public @interface DateTimeFormat {

    /**
     * 序列化格式
     *
     * @return {@link String }
     */
    String serializer() default "";

    /**
     * 反序列化格式
     *
     * @return {@link String }
     */
    String deserializer() default "";

    String locale() default DEFAULT_LOCALE;

    String timezone() default DEFAULT_TIMEZONE;

    enum Model {
        /**
         * 默认显示
         */
        DEFAULT,

        /**
         * 自定义显示，
         */
        CUSTOM,
    }
}
